Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Кафедра ПЗ
КУРСОВА РОБОТА
з курсу «Проблемно-орієнтовані мови програмування»
Варіант 21
Завдання
1. Обчислити суму від’ємних елементів даної матриці, розміщених під головною діагоналлю в стовпцях з парними номерами.
2. Обчислити суми елементів стовпців, номери яких визначаються номерами додатніх елементів заданого вектора.
3. З множини М точок на площині, заданих декартовими координатами на площині, сформувати підмножину P≤M, що містить точки, які знаходяться всередині замкненої області D. Область D обмежена лініями (K – змінний коефіцієнт):
4. З множини прямих М, заданих коефіцієнтами рівняння Ax+By+C=0, сформувати множину прямих P≤M, відстань від яких до точки A(xa; ya) менша за задану величину, і впорядкувати цю множину в порядку зростання відстаней.
5. З множини М точок на площині, сформувати множину точок P≤M, відстань від яких до прямої Ax+By+C=0 найбільша, і впорядкувати цю множину за зростанням відстаней.
6. З множини прямих М, заданих коефіцієнтами рівняння, сформувати множину всіх пар паралельних прямих, відстань між якими належить заданому інтервалу.
7. Визначити довжини ламаних ліній, які починаються в точці A(xa; ya), проходять через одну з точок множини M {(x1; y1), (x2; y2), (x3; y3), ... ,(xn; yn)}. Сформувати множину точок P≤M, що належить ламаним, довжина яких найменша. Впорядкувати цю множину в порядку спадання довжин ламаних.
8. Обчислити методом парабол (Сімпсона) інтеграл
, a = 0,6853; b = 2,0 ... 3,0
9. Обчислити методом Ньютона (дотичних) наближений корінь рівняння:
, αпоч.=0,32; αкінц.=0,4; Δα=0,01; a0=0,1; b0=1,2
Текст програми
Модуль KURS.CPP
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include "zavd4-6.h"
#include "zavd7-9.h"
int VybirZavd();
void Zavd1();
void Zavd2();
void Zavd3();
void main()
{
int zavd;
textcolor(15);
clrscr();
do
{
zavd=VybirZavd(); // Вибiр номера завдання користувачем
switch(zavd)
{
case 1: Zavd1(); break; // 1 - викликаємо функцiю для завд.1
case 2: Zavd2(); break; // 2 - викликаємо функцiю для завд.2
case 3: Zavd3(); break; // ...
case 4: Zavd4(); break;
case 5: Zavd5(); break;
case 6: Zavd6(); break;
case 7: Zavd7(); break;
case 8: Zavd8(); break;
case 9: Zavd9(); break; // 9 - викликаємо функцiю для завд.9
}
}
while (zavd); // Якщо 0 - завершуємо роботу програми
}
int VybirZavd()
{
int task=0;
clrscr();
printf("Номер завдання (0-завершити роботу): ");
// Читаємо номер завдання з клавiатури...
scanf("%d",&task);
// ...i повертаємо його як результат роботи функцiї
return task;
}
void Zavd1()
{
int i,j, n, rezhym, a[50][50], maxpos,s;
FILE *f;
clrscr();
printf("Режим роботи програми (0-звичайний, 1-демонстрацiя): ");
// Задаємо режим роботи програми
scanf("%d",&rezhym);
printf("\n");
if (rezhym!=1) // Якщо "Звичайний" - читаємо данi з клавiатури
{
printf ("Введiть порядок матрицi: "); scanf("%d",&n);
printf ("Введiть елементи матрицi (по рядках)\n");
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf("%d",&a[i][j]);
}
else // iнакше - читаємо данi з файлу i виводимо їх на екран
{
f=fopen("z1demo.dat","rt");
printf("Введiть порядок матрицi: ");
fscanf(f,"%d",&n); printf("%d\n",n);
printf ("Введiть елементи матрицi (по рядках)\n");
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
fscanf(f,"%d",&a[i][j]);
printf("%d ",a[i][j]);
}
printf("\n");
}...